package com.plant.scanner.db.base;

import java.util.List;

/**
 * @desc 通用的实体操作接口
 */
public interface DAO<M> {

    /**
     * 增加数据到数据库
     *
     * @param m 实体
     * @return 是否成功
     */
    boolean insert(M m);

    /**
     * 删除该数据
     *
     * @param m 实体
     * @return 1标示删除成功，0标示失败
     */
    boolean delete(M m);

    /**
     * 通过id删除该数据
     *
     * @param id 实体id
     * @return 1标示删除成功，0标示失败
     */
    boolean deleteById(String id);

    /**
     * 更新
     *
     * @param m 实体
     * @return 是否更新成功
     */
    boolean update(M m);


    /**
     * 查询所有
     *
     * @return 实体集合
     */
    List<M> getAll();

    /**
     * 查询所有数据大小
     *
     * @return count
     */
    long size();

    /**
     * 根据id查询该实体
     *
     * @param id 实体id
     * @return 实体
     */
    M get(String id);


    /**
     * 清除所有表数据
     */
    int clear();

}
